/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.sql.ResultSet;
import java.util.ArrayList;
import pojo.DonDatHangPOJO;
import util.MySQLDataAccessHelper;

/**
 *
 * @author NhatHuy
 */
public class DonDatHangDAO {
    
    
    /**
     * Phương thức xóa đơn đặt hàng.
     */
    public static boolean xoa_DonDatHang_Client(int maDonDatHang){
        boolean kq = false;
        try{
            //Xóa tất cả chi tiết của đơn đặt hàng.
            kq = ChiTietDonDatHangDAO.xoa_ChiTietDonDatHang_Client(maDonDatHang);
            if (kq == false){
                return kq;
            }
            String sql = "DELETE FROM DONDATHANG WHERE MaDonDatHang='%s'";
            sql = String.format(sql, maDonDatHang);
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            int n = helper.executeUpdate(sql);
            if (n != 0){
                kq = true;
            }
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return kq;
    }
    
    /**
     * Phương thức lấy mã tình trạng của đơn đặt hàng.
     */
    public static int lay_MaTinhTrang_CuaDonDatHang_Client(int maDonDatHang){
        int s = 0;
        try{
            String sql = "SELECT MaTinhTrang";
            sql += " FROM dondathang as d";
            sql += " WHERE d.MaDonDatHang=%d";

            sql = String.format(sql, maDonDatHang);
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            if (rs.next()){
                s = rs.getInt(1);
            }
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return s;
    }
    
    /**
     * Phương thức lấy số lượng giày theo mã đơn đặt hàng, mã giày.
     */
    public static int lay_SoLuongGiay_TheoMaDonDatHang_TheoMaGiay_Client(int maDonDatHang, int maGiay){
        int s = 0;
        try{
            String sql = "SELECT SoLuong";
            sql += " FROM dondathang as d,chitietdondathang as c";
            sql += " WHERE d.MaDonDatHang=%d and c.MaGiay=%d and d.MaDonDatHang=c.MaDonDatHang";

            sql = String.format(sql, maDonDatHang, maGiay);
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            if (rs.next()){
                s = rs.getInt(1);
            }
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return s;
    }
    
    /**
     * Phương thức tính tổng tiền giày của đơn 1 đặt hàng.
     */
    public static int tinh_TongTienGiay_CuaDonDatHang_Client(int maDonDatHang){
        int s = 0;
        try{
            String sql = "SELECT SUM(SoLuong*DonGia)";
            sql += " FROM dondathang as d,chitietdondathang as c";
            sql += " WHERE d.MaDonDatHang=%d and d.MaDonDatHang=c.MaDonDatHang";
            sql += " GROUP BY d.MaDonDatHang";

            sql = String.format(sql, maDonDatHang);
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            if (rs.next()){
                s = rs.getInt(1);
            }
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return s;
    }
    
    /**
     * Phương thức tính tổng số giày của đơn 1 đặt hàng.
     */
    public static int tinh_TongSoGiay_CuaDonDatHang_Client(int maDonDatHang){
        int s = 0;
        try{
            String sql = "SELECT SUM(SoLuong)";
            sql += " FROM dondathang as d,chitietdondathang as c";
            sql += " WHERE d.MaDonDatHang=%d and d.MaDonDatHang=c.MaDonDatHang";
            sql += " GROUP BY d.MaDonDatHang";

            sql = String.format(sql, maDonDatHang);
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            if (rs.next()){
                s = rs.getInt(1);
            }
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return s;
    }
    
    /**
     * Phương thức lấy danh sách đơn đặt hàng theo khách hàng.
     */
    public static ArrayList<DonDatHangPOJO> lay_DanhSachDonDatHang_TheoKhachHang_Client(String tenDangNhap){
        ArrayList<DonDatHangPOJO> ds = new ArrayList<DonDatHangPOJO>();
        try{
            String sql = "SELECT * FROM DONDATHANG WHERE TenDangNhap='%s'";
            sql = String.format(sql, tenDangNhap);
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            ResultSet rs = helper.executeQuery(sql);
            while (rs.next()){
                DonDatHangPOJO ddh = new DonDatHangPOJO();
                ddh.setMaDonDatHang(rs.getInt("MaDonDatHang"));
                ddh.setTenDangNhap(rs.getString("TenDangNhap"));
                ddh.setNgayDatHang(rs.getTimestamp("NgayDatHang"));
                ddh.setMaTinhTrang(rs.getInt("MaTinhTrang"));
                ds.add(ddh);
            }
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return ds;
    }
    
    /**
     * Phương thức thêm đơn đặt hàng.
     */
    public static int themDonDatHang(DonDatHangPOJO ddh){
        int kq = 0;
        try{
            String sql = "INSERT INTO DONDATHANG(TenDangNhap,NgayDatHang,MaTinhTrang) VALUES ('%s','%s',%d)";
            sql = String.format(sql, ddh.getTenDangNhap(),ddh.getNgayDatHang(),ddh.getMaTinhTrang());
            MySQLDataAccessHelper helper = new MySQLDataAccessHelper();
            helper.open();
            int n = helper.executeUpdate(sql);
            ResultSet rs;
            if (n == 1){
                sql = "SELECT LAST_INSERT_ID();";
                rs = helper.executeQuery(sql);
                rs.next();
                kq = rs.getInt(1);
            }
            helper.close();
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
        return kq;
    }
}
